/**
 * 系统可调参数配置
 * @file config.h
 * @author martin
 * @date 2021-7-11
 */

#ifndef FTPSERVER_CONFIG_H
#define FTPSERVER_CONFIG_H

#include <bits/posix1_lim.h>
#include <netinet/in.h>
#include <stdbool.h>

#define CFG_FILE_PATH "ftpserver.cfg"

#define DEFAULT_CTRL_PORT  21        /* 默认控制连接端口号 */
#define DEFAULT_DATA_PORT_MIN  12000 /* 默认数据连接端口号 */
#define DEFAULT_DATA_PORT_MAX  20000 /* 默认数据连接端口号 */

typedef struct {
    int listen_port_min;            /* 数据连接监听端口最小值, 要求支持PASV模式 */
    int listen_port_max;            /* 数据连接监听端口最大值, 要求支持PASV模式 */
    int timeout;                    /* 数据连接超时时间 */
}DataConn_Cfg_t;

typedef struct {
    char root_dir[_POSIX_PATH_MAX]; /* 根目录 */
    char ip[INET_ADDRSTRLEN];       /* 服务器IPv4地址 */
    int listen_port;                /* 控制连接默认端口 */
    int client_num_max;             /* 同时连接最大客户数 */

    bool anonymous_enable;          /* 支持匿名用户 */
    bool user_check_enable;         /* 用户验证 */
    bool pasv_mode_enable;          /* PASV模式使能 */
//    bool port_mode_enable;          /* PORT模式使能 */

    int session_timeout;            /* 会话超时时间 */

    DataConn_Cfg_t data_conn_cfg;  /* 数据连接配置 */
}FtpServer_Cfg_t;

int getRootPrivileged();

#endif //FTPSERVER_CONFIG_H
